﻿using System;
using System.Collections.Generic;
using System.Data.Entity.Validation;
using System.Linq;
using System.Text;

using INSTA.StockApplication.DAL;

namespace INSTA.StockApplication.BLL
{
    public static class Products
    {
        private static ApplicationStockEntities _context = new ApplicationStockEntities();
        
        public static bool AddProduct(string nom,decimal vente, decimal achat,int marque,
                                        int categorie, int fournisseur,int stock)
        {
            PRODUIT p = new PRODUIT();
            p.ID_CATEGORIE = categorie;
            p.ID_FOURNISSEUR = fournisseur;
            p.ID_MARQUE = marque;
            p.NOM = nom;
            p.PRIX_ACHAT = achat;
            p.PRIX_VENTE = vente;
            _context.Set<PRODUIT>().Add(p);
            if(save(_context))
            {
                Inventory i = new Inventory();
                return i.AddQuantityIntoDatabase(p.ID_PRODUIT,stock);

            }
            return false;
        }
        

        public static List<ViewListProduit> GetListOfProductsFromDatabase()
        {
            return _context.ViewListProduits.ToList();
        }

        private static bool save(ApplicationStockEntities context)
        {
            try
            {
                context.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                foreach (var s in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entite : {0} etat {1} : ", s.Entry.Entity.GetType().Name, s.Entry.State);
                    foreach (var v in s.ValidationErrors)
                    {
                        Console.WriteLine("Propriete {0}, erreur {1} : ", v.PropertyName, v.ErrorMessage);
                    }
                }
                return false;
            }
            return true;
        }
    }
}
